<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>天气预报</title>
</head>
<body>
  <div class="card">
    <div class="search">
      <input type="text" placeholder="enter city name" spellcheck="false">
      <button><img src="search.png"></button>
    </div>
    <div class="error">
      <p>Invalid city name</p>
    </div>
    <div class="weather">
      <img src="rain.png" class="weather-icon">
      <h1 class="temp">22°c</h1>
      <h2 class="city">New York</h2>
      <div class="details">
        <div class="col">
          <img src="humidity.png">
          <div>
            <p class="humidity">50%</p>
            <p>Humidity</p>
          </div>
        </div>
        <div class="col">
          <img src="wind.png">
          <div>
            <p class="wind">15 km/h</p>
            <p>Wind Speed</p>
          </div>
        </div>
      </div>
    </div>
  </div>
</body>
<style>
  *
{
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body
{
    background-color: #222;
    font-family: 'Poppins', sans-serif;
}

.card{
  width: 90%;
  max-width: 470px;
  background: linear-gradient(135deg, #00feba, #5b548a);
  color: #fff;
  margin: 100px auto 0;
  border-radius: 20px;
  padding: 40px 35px;
  text-align: center;
}

.search{
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}

.search input{
  border: none;
  outline: none;
  background-color: #ebfffc;
  color: #555;
  padding: 10px 25px;
  height: 60px;
  border-radius: 30px;
  flex: 1;
  margin-right: 16px;
  font-size: 18px;
}

.search button {
  border: none;
  outline: none;
  background-color: #ebfffc;
  width: 60px;
  height: 60px;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  justify-content: center;
  align-items: center;
}

.search button img{
  width: 16px;
}

.weather-icon{
  width: 170px;
  margin-top: 30px;
}

.weather h1 {
  font-size: 80px;
  font-weight: 500;
}

.weather h2 {
  font-size: 45px;
  font-weight: 400;
  margin-top: -10px;
}

.details{
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 50px;
  padding: 0 20px;
}

.details .col{
  display: flex;
  align-items: center;
  text-align: left;
}

.details .col img{
  width: 40px;
  margin-right: 10px;
}

.humidity, .wind{
  font-size: 28px;
}

.weather{
  display: none;
}

.error{
  text-align: left;
  margin-left: 10px;
  font-size: 14px;
  margin-top: 10px;
  display: none;
}
</style>
<script>
  const apiKey = 'f01d87a035c3bd4f3a9dddd4bc75d599'
const apiUrl = 'https://api.openweathermap.org/data/2.5/weather?units=metric&q='

const searchBox = document.querySelector('.search input')
const searchBtn = document.querySelector('.search button')
const weatherIcon = document.querySelector('.weather-icon')

async function checkWeather(city) {
    const response = await fetch(apiUrl + city + `&appid=${apiKey}`)
    console.log(response)
    if (response.status === 404) {
      document.querySelector('.error').style.display = 'block'
      document.querySelector('.weather').style.display = 'none'
      return
    }
    const data = await response.json()
    // console.log(data)

    document.querySelector('.city').innerHTML =  data.name
    document.querySelector('.temp').innerHTML =  Math.round(data.main.temp) + '°c'
    document.querySelector('.humidity').innerHTML =  data.main.humidity + '%'
    document.querySelector('.wind').innerHTML =  data.wind.speed + ' km/h'

   switch (data.weather[0].main) {
    case 'Clouds':
      weatherIcon.src= './images/clouds.png'
      break
    case 'Clear':
      weatherIcon.src= './images/clear.png'
      break
    case 'Rain':
      weatherIcon.src= './images/rain.png'
      break
    case 'Drizzle':
      weatherIcon.src= './images/drizzle.png'
      break 
    case 'Mist':
      weatherIcon.src= './images/mist .png'
      break 
    default:
      weatherIcon.src= './images/clear.png'
      break     
   }
   document.querySelector('.weather').style.display = 'block'
   document.querySelector('.error').style.display = 'none'
}
searchBtn.addEventListener('click', () => {
  checkWeather(searchBox.value)
})
</script>
</html>
